Linux File Authority [User]

/etc/passwd는 표준 텍스트 파일로 직접 텍스트 편집기를 이용해서 관리할 수 있지만,
만일 /etc/passwd 파일이 손상될 경우, 시스템을 이를 읽을 수 없으며 root를 포함한 로그인을 할 수 없어지기 때문에
리눅스 사용자 관리 유틸리티를 사용하는 것이 안전하다.
새로운 사용자 추가
useradd -m # HOME
/usr/sbin/useradd -D #
└─$ /usr/sbin/useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no
LOG_INIT=yes
GROUP: 공통 그룹 지정
HOME: /home/<login name> HOME 계정을 가짐
INACTIVE: 암호가 만료되었을 때 계정 비활성화 여부
EXPIRE: 새 계정의 만료 기간(비어있으면 설정하지 않음)
SHELL: 기본 쉘 설정
SKEL: 시스템이 /etc/skel 디렉토리를 사용자의 HOME 디렉토리에 복 사
CREATE_MAIL_SPOOL: 시스템이 사용자 계정의 mail 디렉토리에 메일을 받을 수 있도록 파일 작성 가능 여부
┌──(csian㉿csian)-[~]
└─$ ls -al /etc/skel
total 72
drwxr-xr-x   5 root root  4096 Mar  1 06:54 .
drwxr-xr-x 178 root root 12288 Mar  5 19:18 ..
-rw-r--r--   1 root root   220 Nov  5 13:43 .bash_logout
-rw-r--r--   1 root root  5551 Feb 11 08:02 .bashrc
-rw-r--r--   1 root root  3526 Nov  5 13:43 .bashrc.original
drwxr-xr-x   7 root root  4096 Feb 11 08:22 .config
-rw-r--r--   1 root root 11759 Nov 21 07:11 .face
lrwxrwxrwx   1 root root     5 Feb 17 07:59 .face.icon -> .face
drwxr-xr-x   3 root root  4096 Feb 11 08:00 .java
drwxr-xr-x   3 root root  4096 Feb 11 08:22 .local
-rw-r--r--   1 root root   807 Nov  5 13:43 .profile
-rw-r--r--   1 root root 10868 Feb 24 00:38 .zshrc
useradd 커맨드라인 매개변수
-c: 주석 필드에 comment 텍스트 추가
-d: 홈 디렉토리를 로그인 이름이 아닌 다른 이름으로 설정
-e: exire date 설정 YYYY-MM-DD 형식으로 설정
-f: 암호가 완료된 이 후 며칠 후에 계정을 사용하지 못하는 지 설정(0: 즉시, -1: 만료되도 사용 가능)
-g: 사용자의 로그인 그룹 이름 또는 GID
-G: 사용자가 속할 하나 이상의 추가 그룹
-k: 만들 디렉토리에 복사 소스 디렉토리 위치(-m 옵션과 함께 사용해야 함)
-m: HOME 디렉토리 생성
-M: HOME 디렉토리 생성하지 않음
-n: 사용자의 로그인 이름과 같은 새로운 그룹 생성
-r: 시스템 계정 생성
-p: 기본 암호를 지정
-s: 기본 로그인 쉘을 지정
-u: 고유한 UID 지정

useradd -D 매개변수(default 값 설정)
-b: HOME 디렉토리가 생성되는 위치 변경
-e: 만료 날짜를 변경
-f: 암호가 완료된지 며칠 후에 계정을 사용하지 못하는지 설정
-g: 사용할 기본 그룹 이름 또는 GID
-s: 기본 로그인 쉘을 변경
사용자 제거
# (/etc/passwd ) ( X)
userdel <name>
# HOME mail
userdel -r <name>
사용자 수정하기
- usermod
가장 강력한 사용자 계정 변경 유틸리티(/etc/passwd 필드의 대부분의 내용을 수정 가능함)
usermod -l <name> <new login> #
usermod -L <name> #
usermod -p <name> <new passwd> #
usermod -U <name> #
-p를 이용한 password 변경은 history등에 비밀번호 기록을 그대로 남기기 때문에 사용하지 않는 것을 권장함

usermod -G <Group Name> <User Name>을 통해 그룹 멤버를 추가하는데도 사용됨
- passwd & chpasswd
사용자의 암호만을 변경
passwd #
passwd -e # expire immediately
# userid:password
chpasswd < passwords.txt
echo <userid>:<password> | chpasswd
- change & chfn & chsh
계정의 특정한 기능을 수정하기 위함
chsh: 계정의 기본 로그인 쉘을 변경(쉘의 전체 경로)
chfn: /etc/passwd의 주석 필드에 정보를 저장
change: 사용자 계정의 암호를 얼마나 오래 쓸지를 관리
    -d: 암호가 마지막을 변경된 날로부터의 일수를 설정
    -E: 암호가 만료되는 날짜를 지정
    -l: 암호가 만료된 날로부터 계정을 잠궈 비활성화 시키기 가지의 일 수
    -m: 암호 변경 날짜 사이의 최소 일수
    -W: 암호가 만료되는 날로부터 며칠 전부터 경고 메시지를 보여줄지 일 수를 지정
(날짜 설정은 YYYY-MM-DD 혹은 1970.01.01로부터 시작되는 일수를 뜻하는 숫자값)
chsh -s /bin/bash <name>
chfn <name> #
finger <name> #